package com.ffcs.crmd.tsp.api.dto.client;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.ffcs.crmd.tsp.api.dto.enu.JobDetailState;
import com.thoughtworks.xstream.annotations.XStreamAliasType;

/**
 * 
 * 功能说明:子任务
 *
 * @author ZHONGFUHUA
 * 
 * @since 1.0.0-SNAPSHOT
 *
 */
@XStreamAliasType("TspJobDetail")
public class TspJobDetail implements Serializable {
    
    /**
     * 
     */
    private static final long       serialVersionUID = -1753224122615379301L;
    
    /**
     * 主键
     */
    private Long                    id;
    
    /**
     * 任务ID
     */
    private Long                    jobId;
    
    /**
     * 
     */
    private long                    runtimes;
    
    /**
     * 
     */
    private Short                   running;
    
    /**
     * 子任务名
     */
    private String                  name;
    
    /**
     * 任务名
     */
    private String                  jobName;
    
    /**
     * 
     */
    private String                  clusterName;
    
    /**
     * 任务描述
     */
    private String                  description;
    
    /**
     * 0:PAUSE 1:NORMAL 3:BLOCKED 4:COMPLETE 5:ERROR 6:NONE
     */
    private JobDetailState          jobDetailState   = JobDetailState.NORMAL;
    
    /**
     * 开始执行时间
     */
    private Date                    startTime;
    
    /**
     * 结束时间
     */
    private Date                    endTime;
    
    /**
     * 上次执行时间
     */
    private Date                    prevTime;
    
    /**
     * 下次执行时间
     */
    private Date                    nextTime;
    
    /**
     * 任务参数
     */
    private List<TspJobDetailParam> params;
    
    /**
     * 
     */
    private Integer                 pageSize;
    
    /**
     * 
     */
    private Integer                 pageNumber;
    
    /**
     * 功能说明: 获取主键
     *
     * @return id 主键
     */
    public Long getId() {
        return id;
    }
    
    /**
     * 功能说明: 设置主键
     *
     * @param id 主键 
     */
    public void setId(Long id) {
        this.id = id;
    }
    
    /**
     * 功能说明: 获取任务ID
     *
     * @return jobId 任务ID
     */
    public Long getJobId() {
        return jobId;
    }
    
    /**
     * 功能说明: 设置任务ID
     *
     * @param jobId 任务ID 
     */
    public void setJobId(Long jobId) {
        this.jobId = jobId;
    }
    
    /**
     * 功能说明: 获取子任务名
     *
     * @return name 子任务名
     */
    public String getName() {
        return name;
    }
    
    /**
     * 功能说明: 设置子任务名
     *
     * @param name 子任务名 
     */
    public void setName(String name) {
        this.name = name;
    }
    
    /**
     * 功能说明: 获取任务名
     *
     * @return jobName 任务名
     */
    public String getJobName() {
        return jobName;
    }
    
    /**
     * 功能说明: 设置任务名
     *
     * @param jobName 任务名 
     */
    public void setJobName(String jobName) {
        this.jobName = jobName;
    }
    
    /**
     * 功能说明: 获取
     *
     * @return clusterName 
     */
    public String getClusterName() {
        return clusterName;
    }
    
    /**
     * 功能说明: 设置
     *
     * @param clusterName  
     */
    public void setClusterName(String clusterName) {
        this.clusterName = clusterName;
    }
    
    /**
     * 功能说明: 获取任务描述
     *
     * @return description 任务描述
     */
    public String getDescription() {
        return description;
    }
    
    /**
     * 功能说明: 设置任务描述
     *
     * @param description 任务描述 
     */
    public void setDescription(String description) {
        this.description = description;
    }
    
    /**
     * 功能说明: 获取0:PAUSE1:NORMAL3:BLOCKED4:COMPLETE5:ERROR6:NONE
     *
     * @return jobDetailState 0:PAUSE1:NORMAL3:BLOCKED4:COMPLETE5:ERROR6:NONE
     */
    public JobDetailState getJobDetailState() {
        return jobDetailState;
    }
    
    /**
     * 功能说明: 设置0:PAUSE1:NORMAL3:BLOCKED4:COMPLETE5:ERROR6:NONE
     *
     * @param jobDetailState 0:PAUSE1:NORMAL3:BLOCKED4:COMPLETE5:ERROR6:NONE 
     */
    public void setJobDetailState(JobDetailState jobDetailState) {
        this.jobDetailState = jobDetailState;
    }
    
    /**
     * 功能说明: 获取开始执行时间
     *
     * @return startTime 开始执行时间
     */
    public Date getStartTime() {
        return startTime;
    }
    
    /**
     * 功能说明: 设置开始执行时间
     *
     * @param startTime 开始执行时间 
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    
    /**
     * 功能说明: 获取结束时间
     *
     * @return endTime 结束时间
     */
    public Date getEndTime() {
        return endTime;
    }
    
    /**
     * 功能说明: 设置结束时间
     *
     * @param endTime 结束时间 
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    
    /**
     * 功能说明: 获取上次执行时间
     *
     * @return prevTime 上次执行时间
     */
    public Date getPrevTime() {
        return prevTime;
    }
    
    /**
     * 功能说明: 设置上次执行时间
     *
     * @param prevTime 上次执行时间 
     */
    public void setPrevTime(Date prevTime) {
        this.prevTime = prevTime;
    }
    
    /**
     * 功能说明: 获取下次执行时间
     *
     * @return nextTime 下次执行时间
     */
    public Date getNextTime() {
        return nextTime;
    }
    
    /**
     * 功能说明: 设置下次执行时间
     *
     * @param nextTime 下次执行时间 
     */
    public void setNextTime(Date nextTime) {
        this.nextTime = nextTime;
    }
    
    /**
     * 功能说明: 获取任务参数
     *
     * @return params 任务参数
     */
    public List<TspJobDetailParam> getParams() {
        return params;
    }
    
    /**
     * 功能说明: 设置任务参数
     *
     * @param params 任务参数 
     */
    public void setParams(List<TspJobDetailParam> params) {
        this.params = params;
    }
    
    /**
     * 
     * 功能说明:获取key
     * 
     * @return
     */
    public String getKey() {
        return jobName + "." + name;
    }
    
    /**
     * 功能说明: 获取pageSize
     *
     * @return pageSize pageSize
     */
    public Integer getPageSize() {
        return pageSize;
    }
    
    /**
     * 功能说明: 设置pageSize
     *
     * @param pageSize pageSize 
     */
    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }
    
    /**
     * 功能说明: 获取pageNumber
     *
     * @return pageNumber pageNumber
     */
    public Integer getPageNumber() {
        return pageNumber;
    }
    
    /**
     * 功能说明: 设置pageNumber
     *
     * @param pageNumber pageNumber 
     */
    public void setPageNumber(Integer pageNumber) {
        this.pageNumber = pageNumber;
    }
    
    /**
     * 功能说明: 获取
     *
     * @return runtimes 
     */
    public long getRuntimes() {
        return runtimes;
    }
    
    /**
     * 功能说明: 设置
     *
     * @param runtimes  
     */
    public void setRuntimes(long runtimes) {
        this.runtimes = runtimes;
    }
    
    /**
     * 功能说明: 获取
     *
     * @return running 
     */
    public Short getRunning() {
        return running;
    }
    
    /**
     * 功能说明: 设置
     *
     * @param running  
     */
    public void setRunning(Short running) {
        this.running = running;
    }
    
    /**
     * 功能说明:
     * 
     * @return
     */
    @Override
    public String toString() {
        return "TspJobDetail [id=" + id + ", jobId=" + jobId + ", runtimes=" + runtimes + ", name=" + name + ", jobName=" + jobName
            + ", clusterName=" + clusterName + ", description=" + description + ", jobDetailState=" + jobDetailState + ", startTime=" + startTime
            + ", endTime=" + endTime + ", prevTime=" + prevTime + ", nextTime=" + nextTime + ", params=" + params + ", pageSize=" + pageSize
            + ", pageNumber=" + pageNumber + "]";
    }
    
}
